package com.boot;

import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;

public class MysqlGenerator {

    public static void main(String[] args) {
        // 代码生成器
        AutoGenerator mpg = new AutoGenerator();

        // 全局配置
        GlobalConfig gc = new GlobalConfig();
        //直接生成放到项目中
        //user.dir:当前用户目录
        String projectPath = System.getProperty("user.dir");
        gc.setOutputDir(projectPath + "/mybatisplus02/src/main/java");
        gc.setAuthor("ZQD"); // 作者名称
        gc.setBaseResultMap(true); // mapper.xml 生成 ResultMap
        gc.setBaseColumnList(true); // mapper.xml 生成 ColumnList
        gc.setOpen(false);//是否打开输出目录
        mpg.setGlobalConfig(gc);

        // 数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://127.0.0.1:3306/mybatisplus2110");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("root");
        mpg.setDataSource(dsc);

        // 包配置
        PackageConfig pc = new PackageConfig();
        pc.setParent("com.boot");
        mpg.setPackageInfo(pc);

        // 配置模板
        TemplateConfig templateConfig = new TemplateConfig();
        templateConfig.setXml(null);
        mpg.setTemplate(templateConfig);

        // 策略配置
        StrategyConfig strategy = new StrategyConfig();
        strategy.setNaming(NamingStrategy.underline_to_camel);//下划线转驼峰命名
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);//下划线转驼峰命名
        strategy.setEntityLombokModel(true);//添加lombok
        strategy.setRestControllerStyle(true);//rest接口
        strategy.setInclude("t_log");//表名
        strategy.setControllerMappingHyphenStyle(true);//驼峰转连字符 HelloWorld hello_world
        strategy.setTablePrefix(pc.getModuleName() + "t_");//表前缀
        mpg.setStrategy(strategy);
        mpg.setTemplateEngine(new VelocityTemplateEngine());
        mpg.execute();
    }

}


